/*
	This file is part of Vajolet.

    Vajolet is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Vajolet is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Vajolet.  If not, see <http://www.gnu.org/licenses/>
*/
#ifndef _hash
#define _hash

#include "vajolet.h"


struct HashKeys
{
	// total size = 1093 * 8 = 8744 bytes (minimum required is 6312):
	U64 keys[64][30];  // position, piece (not all the keys are used)
	U64 side;          // side to move (black)
	U64 ep[64];        // ep targets (only 16 used)
	U64 castlingRight[16];            // white king-side castling right
	U64 exclusion;


	void init();       // initialize the random data
	U64 rand64();      // 64-bit random number generator
};

#endif
